package com.md.common.utils.excel;

import com.md.common.utils.excel.model.ExcelCell;
import com.md.common.utils.excel.model.ExcelCellData;
import com.md.common.utils.excel.model.ExcelSheet;

import java.io.File;
import java.util.List;

public interface ExcelHandler {

	/**
	 * 读取Excel文件
	 * @param excelPath excel文件路径
	 * @param hasTitle 内容是否包含标题（true则跳过第一行）
	 * @param colCount 读取列数，-1则读取所有的列
	 * @return 
	 */
	List<List<ExcelCellData>> readExcel(String excelPath, boolean hasTitle, int colCount);
	
	/**
	 * 读取Excel文件
	 * @param excelPath excel文件路径
	 * @param hasTitle 内容是否包含标题（true则跳过第一行）
	 * @param sheetNo 表格编号
	 * @param colCount 读取列数，-1则读取所有的列
	 * @return
	 */
	List<List<ExcelCellData>> readExcel(String excelPath, boolean hasTitle, int sheetNo, int colCount);
	
	/**
	 * 读取Excel文件
	 * @param excel excel文件
	 * @param hasTitle 内容是否包含标题（true则跳过第一行）
	 * @param colCount 读取列数，-1则读取所有的列
	 * @return
	 */
	List<List<ExcelCellData>> readExcel(File excel, boolean hasTitle, int colCount);
	
	/**
	 * 读取Excel文件
	 * @param excel excel文件
	 * @param hasTitle 内容是否包含标题（true则跳过第一行）
	 * @param sheetNo 表格编号
	 * @param colCount 读取列数，-1则读取所有的列
	 * @return
	 */
	List<List<ExcelCellData>> readExcel(File excel, boolean hasTitle, int sheetNo, int colCount);
	
	/**
	 * 读取Excel文件
	 * @param excel excel文件
	 * @param ignoreRow 忽略excel前面的N行
	 * @param sheetNo 表格编号
	 * @param colCount 读取列数
	 * @return
	 */
	List<List<ExcelCellData>> readExcel(File excel, int ignoreRow, int sheetNo, int colCount);

	/**
	 * 写入内容到excel
	 * @param filePath 文件路径
	 * @param sheet 数据内容
	 */
	File writeExcel(String filePath, ExcelSheet sheet);
		
	/**
	 * 写入内容到excel
	 * @param filePath 文件路径
	 * @param datas 数据内容
	 */
	File writeExcel(String filePath, List<List<String>> datas);

	/**
	 * 写入内容到excel
	 * @param filePath 文件路径
	 * @param datas 数据内容
	 * @param sheetName 表名称
	 */
	File writeExcel(String filePath, List<List<String>> datas, String sheetName);

	/**
	 * 写入内容到excel
	 * @param filePath 文件路径
	 * @param titles 数据标题
	 * @param datas 数据内容
	 */
	File writeExcel(String filePath, List<String> titles, List<List<String>> datas);


	/**
	 * 写入内容到excel
	 * @param filePath 文件路径
	 * @param titles 数据标题
	 * @param datas 数据内容
	 * @param sheetName 表名称
	 */
	File writeExcel(String filePath, List<String> titles, List<List<String>> datas, String sheetName);

	/**
	 * 写入内容到excel
	 * @param filePath 文件路径
	 * @param datas 数据内容
	 * @param sheetName 表名称
	 * @param sheetNo 表编号
	 */
	File writeExcel(String filePath, List<List<String>> datas, String sheetName, int sheetNo);

	/**
	 * 写入内容到excel
	 * @param filePath 文件路径
	 * @param titles 数据标题
	 * @param datas 数据内容
	 * @param sheetName 表名称
	 * @param sheetNo 表编号
	 */
	File writeExcel(String filePath, List<String> titles, List<List<String>> datas, String sheetName, int sheetNo);

	File writeExcel(String filePath, List<ExcelCell> mainTitles, List<String> titles, List<List<String>> datas, String sheetName);
	
	File writeExcel(String filePath, List<ExcelCell> mainTitles, List<String> titles, List<List<String>> datas,
                    String sheetName, int sheetNo);

}
